package com.bdzl.auth.service;

import com.bdzl.pub.entity.sys.RoleDO;
import com.bdzl.pub.util.param.R;
import com.bdzl.pub.vo.sys.RoleVO;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;
import java.util.Set;

/**
 * 系统角色表
 *
 * @author yangyicai
 * @email yangyicai@foxmail.com
 * @date 2021-03-23 13:59:22
 */
public interface RoleService {

	RoleDO get(Integer roleId);

	/**
	 * @Author Zhn
	 * @Description //TODO 根据角色roleCode获取角色
	 * @Date 16:36 2021/5/20
	 * @Param [roleId]
	 * @return com.bdzl.pub.entity.sys.RoleDO
	 **/
	RoleDO getByRoleCode(String roleCode);

	List<RoleDO> list(Map<String, Object> map);

	int count(Map<String, Object> map);

	int save(RoleDO role);

	R saveRoleDO(RoleVO role);

	int update(RoleDO role);

	R updateRoleDO(RoleVO role);

	int remove(Integer roleId);

	int batchRemove(Integer[] roleIds);
	/**
	* @Description: TODO 根据用户名查询所拥有角色
	* @param username 用户名
	* @return: java.util.List<java.lang.String>
	* @Author: Ming
	* @Date: 2021/4/27 18:21
	*/
	Set<String> getRoleByUserName(@Param("username") String username);

	/**
	 * 查询某个用户所属的所有角色
	 * @param userId
	 * @return
	 */
	List<RoleDO> userRoles(Integer userId);
}
